…rowset_metadata (apache#55604)
Related PR: apache#54395
Problem Summary:
The _rs_metas and _rs_version_map information in tmp_tablet meta are
inconsistent, causing the attempt to fetch rowset by version to fail
(getting null pointer). The tmp_tablet meta was copied from new tablet,
and its rowset information is actually useless since the real rowset
data will be obtained later through sync rowset. The sync rowset
operation failed to remove the old rowsets, resulting in this
inconsistency. We need to first clean up the obsolete rowsets in
tmp_tablet meta.
*** SIGSEGV address not mapped to object (@0x38) received by PID 2824014
(TID 2824488 OR 0x7f59e8eff640) from PID 56; stack trace: ***
0# doris::signal::(anonymous namespace)::FailureSignalHandler(int,
siginfo_t*, void*) at
/home/zcp/repo_center/doris_master/doris/be/src/common/signal_handler.h:420
1# PosixSignals::chained_handler(int, siginfo*, void*) [clone .part.0]
in /usr/lib/jvm/java-17-openjdk-amd64/lib/server/libjvm.so
2# JVM_handle_linux_signal in
/usr/lib/jvm/java-17-openjdk-amd64/lib/server/libjvm.so
3# 0x00007F5B3AC5F520 in /lib/x86_64-linux-gnu/libc.so.6
4# doris::cloud::CloudMetaMgr::fill_version_holes(doris::CloudTablet*,
long, std::unique_lock<std::shared_mutex>&) at
/home/zcp/repo_center/doris_master/doris/be/src/cloud/cloud_meta_mgr.cpp:1650
5#
doris::cloud::CloudMetaMgr::sync_tablet_rowsets_unlocked(doris::CloudTablet*,
std::unique_lock<bthread::Mutex>&, doris::SyncOptions const&,
doris::SyncRowsetStats*) in /mnt/hdd01/PERFORMANCE_ENV/be/lib/doris_be
6# doris::cloud::CloudMetaMgr::sync_tablet_rowsets(doris::CloudTablet*,
doris::SyncOptions const&, doris::SyncRowsetStats*) at
/home/zcp/repo_center/doris_master/doris/be/src/cloud/cloud_meta_mgr.cpp:477
7# doris::CloudSchemaChangeJob::_process_delete_bitmap(long, long, long)
at
/home/zcp/repo_center/doris_master/doris/be/src/cloud/cloud_schema_change_job.cpp:519
8#
doris::CloudSchemaChangeJob::_convert_historical_rowsets(doris::SchemaChangeParams
const&, doris::cloud::TabletJobInfoPB&) at
/home/zcp/repo_center/doris_master/doris/be/src/cloud/cloud_schema_change_job.cpp:424
9#
doris::CloudSchemaChangeJob::process_alter_tablet(doris::TAlterTabletReqV2
const&) in /mnt/hdd01/PERFORMANCE_ENV/be/lib/doris_be
10# doris::alter_cloud_tablet_callback(doris::CloudStorageEngine&,
doris::TAgentTaskRequest const&) at
/home/zcp/repo_center/doris_master/doris/be/src/agent/task_worker_pool.cpp:2176
11# std::_Function_handler<void (),
doris::TaskWorkerPool::submit_task(doris::TAgentTaskRequest
const&)::$_0::operator()<doris::TAgentTaskRequest
const&>(doris::TAgentTaskRequest const&)
const::{lambda()apache#1}>::_M_invoke(std::_Any_data const&) at
/usr/local/ldb-toolchain-v0.26/bin/../lib/gcc/x86_64-pc-linux-gnu/15/include/g++-v15/bits/std_function.h:292
12# doris::ThreadPool::dispatch_thread() at
/home/zcp/repo_center/doris_master/doris/be/src/util/threadpool.cpp:621
13# doris::Thread::supervise_thread(void*) at
/home/zcp/repo_center/doris_master/doris/be/src/util/thread.cpp:461
pick from:#54395 #55171 #55604 #55742 #55837